package fachklassen;

import helper.BLError;
import helper.BLWarning;
import helper.Helper;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;

import database.DatabaseManager;
/**
 * Fachklasse mit Gettern und Settern
 *
 * @author	Michael Wolf
 * @author	Tanja Goletz
 * @version	1.0
 */
public class Zeugnis {
	int zeugnisID;
	int klassenID;
	Klasse klasse;
	int azubiID;
	Azubi azubi;
	ArrayList<Note> noten;
	Date datum;
	int fehltage;
	int unentschuldigteFehltage;
	String bemerkung;
	
	public int getZeugnisID() {
		return zeugnisID;
	}
	public void setZeugnisID(int zeugnisID) {
		this.zeugnisID = zeugnisID;
	}
	public Klasse getKlasse() throws BLError, BLWarning {
		if (klasse == null) {
			ArrayList<Object> elements = DatabaseManager.getInstance().getByAttribute(Klasse.class, "klasseID", klassenID);
			if (elements.size() == 0) klasse = null;
			else klasse = (Klasse)elements.get(0);
		}
		return klasse;
	}
	public void setKlasse(Klasse klasse) {
		this.klasse = klasse;
		this.klassenID = klasse.getKlassenID();
	}
	public Azubi getAzubi() throws BLError, BLWarning {
		if (azubi == null) {
			ArrayList<Object> elements = DatabaseManager.getInstance().getByAttribute(Azubi.class, "azubiID", azubiID);
			if (elements.size() == 0) azubi = null;
			else azubi = (Azubi)elements.get(0);
		}
		return azubi;
	}
	public void setAzubi(Azubi azubi) {
		this.azubi = azubi;
		this.azubiID = azubi.getAzubiID();
	}
	public ArrayList<Note> getNoten() throws BLError, BLWarning {
		if (noten == null) {
			ArrayList<Object> elements = DatabaseManager.getInstance().getByAttribute(Note.class, "zeugnisID", zeugnisID);
			noten = new ArrayList<Note>();
			for (Object element : elements) {
				noten.add((Note)element);
			}
		}
		return noten;
	}
	public Date getDatum() {
		return datum;
	}
	public void setDatum(String datum) throws ParseException {
		this.datum = Helper.parseDate(datum);
	}
	public void setDatum(Date datum) {
		this.datum = datum;
	}
	public int getKlassenID() {
		return klassenID;
	}
	public void setKlassenID(int klassenID) {
		this.klassenID = klassenID;
	}
	public int getAzubiID() {
		return azubiID;
	}
	public void setAzubiID(int azubiID) {
		this.azubiID = azubiID;
	}
	public int getFehltage() {
		return fehltage;
	}
	public void setFehltage(int fehltage) {
		this.fehltage = fehltage;
	}
	public int getUnentschuldigteFehltage() {
		return unentschuldigteFehltage;
	}
	public void setUnentschuldigteFehltage(int unentschuldigteFehltage) {
		this.unentschuldigteFehltage = unentschuldigteFehltage;
	}
	public void setNoten(ArrayList<Note> noten) {
		this.noten = noten;
	}
	@SuppressWarnings("unchecked")
	public void setNoten(Object noten) {
		ArrayList<Note> notenList = new ArrayList<Note>();
		for (Object object : (ArrayList<Object>)noten) {
			notenList.add((Note)object);
		}
		this.noten = notenList;
	}
	public String getBemerkung() {
		return this.bemerkung;
	}
	public void setBemerkung(String bemerkung) {
		this.bemerkung = bemerkung;
	}
	
	
}
